﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using TMDT_ProjGroup09_Client.LogisticSystemWebService;

namespace TMDT_ProjGroup09_Client
{
    public partial class ajaxActions : System.Web.UI.Page
    {
      //  private LogisticSystemWS ws = new LogisticSystemWS();
        private LogisticSystemWS ws = new LogisticSystemWS();
        

        protected void Page_Load(object sender, EventArgs e)
        {
            
            string cmd = Request.QueryString["cmd"];
            if (cmd != null)
            {
                switch (cmd)
                {
                    case "CheckLogin":
                    {
                        
                        if (Session["username"] == null)
                            Response.Write(0);
                        else
                            Response.Write(Session["username"]);
                        break;
                    }
                    case "CheckLoginAdmin":
                    {
                        if (Session["UserNameAdmin"] == null)
                            Response.Write("0,0");
                        else
                            Response.Write(Session["UserIDAdmin"] + "," + Session["UserNameAdmin"].ToString());
                        break;
                    }

                    case "Logout":
                    {
                        Session["username"] = null;
                        Session["UserID"] = null;
                        break;
                    }
                    
                    case "GetListChiNhanh":
                    {
                        ChiNhanhDTO[] cnDTO = ws.TableDsChiNhanh();
                        string html = "";
                        foreach (ChiNhanhDTO cn in cnDTO)
                        {
                            html += "<option value='" + cn.MaChiNhanh + "'" + ">" + cn.TenChiNhanh + "</option>";
                        }
                        Response.Write(html);
                        break;
                    }
                    case "GetListChiNhanh_1":
                    {
                        ChiNhanhDTO[] cnDTO = ws.GetListChiNhanh_1();
                        string html = "<table Align='center' border='1px' cellpadding='2px' cellspacing='2px'><tr style='background:green'><td>Mã chi nhánh</td><td>Tên chi nhánh</td><td>Ghi chí</td></tr>";
                        foreach (ChiNhanhDTO cn in cnDTO)
                        {
                            html += "<tr>";
                            html += "<td>" + cn.MaChiNhanh + "</td>";
                            html += "<td>" + cn.TenChiNhanh + "</td>";
                            html += "<td>" + cn.GhiChu + "</td>";
                            html += "</tr>";
                        }
                       
                        Response.Write(html);
                        break;
                    }
                    case "addChiNhanh":
                    {
                        ChiNhanhDTO nvDTO = new ChiNhanhDTO();
                        nvDTO.TenChiNhanh = Request.QueryString["txt_tenchinhanh"].ToString();
                        nvDTO.DiaChi = Request.QueryString["txt_diachi"].ToString();
                        nvDTO.GhiChu = Request.QueryString["txt_ghichu"].ToString();
                        
                        if (!ws.Insert_ChiNhanh(nvDTO))
                        {
                            Response.Write("Lỗi insert");
                        }
                        else
                            Response.Write("Thêm chi nhánh thành công");
                        break;
                    }
                    case "DatVanChuyen":
                    {

                        if (Session["username"]!=null)
                        {

                            // MonHangDTO  - Hàng được đặt vận chuyển tại chi nhánh - 
                            // nên sẽ vào kho của chi nhánh đó ( MaDiaDiemDatVanChuyen) - Tìm mã kho có mã chi nhánh là (MaDiaDiemDatVanChuyen)
                            // MaDiaDiemMonHang - chi nhánh mà món hànfg đó tới
                            //
                            MonHangDTO mhDTO = new MonHangDTO();
                            mhDTO.TenMonHang = Request.QueryString["TenMonHang"].ToString();
                            mhDTO.KichThuoc = Request.QueryString["KichThuoc"].ToString();
                            mhDTO.TrongLuong = float.Parse(Request.QueryString["TrongLuong"].ToString());

                            mhDTO.DiaChiNhan = Request.QueryString["DiaChiNguoiNhan"].ToString();
                            mhDTO.TenNguoiNhan = Request.QueryString["TenNguoiNhan"].ToString();
                            mhDTO.MaDiaDiem = int.Parse(Request.QueryString["MaDiaDiemMonHang"].ToString());
                            mhDTO.MaKhachHangGui = int.Parse(Session["UserID"].ToString());
                            mhDTO.CMNDNguoiNhan = Request.QueryString["CMNDNguoiNhan"].ToString();

                            // KHoDTO
                            KhoDTO khoDTO = new KhoDTO();
                            khoDTO.MaChiNhanh = int.Parse(Request.QueryString["MaDiaDiemDatVanChuyen"].ToString());
                            khoDTO.MaKho = ws.GetMaKhoByMaChiNhanh(khoDTO.MaChiNhanh);
                            khoDTO.Gui = 1; // Xác nhận hàng là gửi đi tại kho nhận

                            // DatVANCHUYEN
                            DatVanChuyenDTO dvcDTO = new DatVanChuyenDTO();
                            dvcDTO.MaDiaDiem = int.Parse(Request.QueryString["MaDiaDiemDatVanChuyen"].ToString());
                            dvcDTO.MaMonHang = mhDTO.MaMonHang;
                            //
                            string NgayLayHang = Request.QueryString["month"] + "-" + Request.QueryString["day"] + "-" + Request.QueryString["year"];
                            dvcDTO.NgayLayHang = DateTime.Parse(NgayLayHang);
                            dvcDTO.MaLoaiVC = int.Parse(Request.QueryString["LoaiVanChuyen"].ToString());
                            dvcDTO.DiaChiLayHang = Request.QueryString["DiaChiLayHang"].ToString();
                            dvcDTO.NgayDat = DateTime.Parse(DateTime.Today.ToString());
                            // Insert 1 phát 1
                            if (ws.InsertMONHANG(mhDTO, khoDTO, dvcDTO) != "-1")
                                Response.Write("<span style=\"font-size:21px;font-weight:bold; color:green\"> &nbsp;&nbsp;&nbsp; &#9745; Đặt vận chuyển thành công  !!! </span>");
                            else Response.Write("<span style=\"font-size:21px;font-weight:bold; color:red\"> &nbsp;&nbsp;&nbsp; &#9746; Error !!! </span>");
                        }
                        else Response.Write("<span style=\"font-size:21px;font-weight:bold; color:red\"> &nbsp;&nbsp;&nbsp; &#9746; Bạn chưa đăng nhập !!! </span>");
                        break;
                    }
                }
            }

            string cmdPOST = Request["cmd"];
            if (cmdPOST != null)
            {
                switch (cmdPOST)
                {
                    case "Login":
                    {
                        string username = Request["username"].ToString();
                        string pass = Request["pass"].ToString();
                          
                        if (ws.CheckLogin(username, pass))
                        {
                            Session["username"] = username;
                            Response.Write(Session["username"].ToString());
                            Session["UserID"] = ws.GetIDUser(username);
                        }
                        else
                        {
                            Response.Write(0);
                        }
                        break;
                    }
                    case "LoginAdmin":
                    {
                        string username = Request["username"].ToString();
                        string pass = Request["pass"].ToString();
                        int MaNhanVien = ws.CheckLoginNhanVien(username, pass);
                        if (MaNhanVien>0)
                        {
                            Session["UserNameAdmin"] = username;
                            int MaLoaiNV = ws.GetMaLoaiNV(MaNhanVien);
                            Response.Write(MaLoaiNV + "," + Session["UserNameAdmin"].ToString());
                            Session["UserIDAdmin"] = MaLoaiNV;

                        }
                        else
                        {
                            Response.Write("0,0");
                        }
                        break;
                    }
                    case "Register":
                    {
                        
                        KhachHangDTO khDTO = new KhachHangDTO();

                        string salt = "Mam&Muoi";
                        khDTO.Username = Request["username"];
                        khDTO.Password = Request["password"] + salt;
                        khDTO.Password = khDTO.Password.GetHashCode().ToString();
                        khDTO.CMND = Request["cmnd"];
                        khDTO.ThongTinTaiKhoan = Request["thongtintaikhoan"];
                        khDTO.DiaChi = Request["addr"];
                        khDTO.DienThoai = Request["phone"];
                        khDTO.TenKhachHang = Request["fullname"];

                        if (ws.InsertKhachHang(khDTO))
                            Response.Write("Đăng ký thành công");
                        else Response.Write("Đăng ký thất bại");
                        break;
                    }
                } //end switch cmdPOST
            }// end if


            // 
            // Chức năng xử lý dành cho admin - Do WS sử 1 lần nên gom lại 1 file ajaxActions.aspx ở client & Server;
            if (Session["UserNameAdmin"] != null)
            {
                switch (cmd)
                {
                    case "LogoutAdmin":
                    {
                        Session["UserNameAdmin"] = null;
                        Session["UserIDAdmin"] = null;
                        break;
                    }

                    case "GetListLoaiNhanVien":
                    {
                        LoaiNhanVienDTO[] lnvDTOs = ws.GetList_LoaiNhanVien();
                        string html = "";
                        foreach (LoaiNhanVienDTO lnvDTO in lnvDTOs)
                        {
                            html += "<option value='" + lnvDTO.MaLoaiNV + "'" + ">" + lnvDTO.TenLoaiNV + "</option>";
                        }
                        Response.Write(html);
                        break;
                    }
                    case "addNhanVien":
                    {
                        NhanVienDTO nvDTO = new NhanVienDTO();
                        nvDTO.TenNhanVien = Request.QueryString["txt_tennhanvien"].ToString();
                        nvDTO.MaLoaiNV = int.Parse(Request.QueryString["sbLoaiNhanVien"].ToString());
                        nvDTO.NgayNhanChuc = DateTime.Parse(Request.QueryString["txt_ngaynhanchuc"].ToString());
                        nvDTO.UserNameNV = Request.QueryString["txt_tendangnhap"].ToString();
                        nvDTO.PassWordNV = Request.QueryString["txt_matkhau"].ToString();
                        if (!ws.insert_NhanVien(nvDTO))
                        {
                            Response.Write("Lỗi insert");
                        }
                        else
                            Response.Write("Thêm nhân viên thành công");
                        break;
                    }
                    case "GetListNhanVien":
                    {
                        NhanVienDTO[] nvDTOs = ws.GetListNHANVIEN();
                        string html = "<table Align='center' border='1px' cellpadding='2px' cellspacing='2px'><tr style='background:green'><td>Mã nhân viên</td><td>Tên nhân viên</td><td>username</td><td>Password</td><td>Ngày nhận chức</td><td>Xóa</td><td>Quá trình nhận chức</td></tr>";
                        for (int i = 0; i < nvDTOs.Count(); i++)
                        {
                            int manhanvien = nvDTOs[i].MaNhanVien;
                            // string tenloainv = nvDTOs[i].TenLoaiNV;
                            html += "<tr>";
                            html += "<td>" + nvDTOs[i].MaNhanVien + "</td>";
                            html += "<td>" + nvDTOs[i].TenNhanVien + "</td>";
                            html += "<td>" + nvDTOs[i].TenLoaiNV + "</td>";
                            html += "<td>" + nvDTOs[i].UserNameNV + "</td>";
                            html += "<td>" + nvDTOs[i].PassWordNV + "</td>";
                            html += "<td>" + nvDTOs[i].NgayNhanChuc + "</td>";
                            html += "<td>" + "<a href='#'> Xóa </a>" + "</td>";
                            html += "<td>" + "<a href='#' onclick='if(viewDetail(" + nvDTOs[i].MaNhanVien + ")) return false;'> Chi tiết </a>" + "</td>";
                            html += "</tr>";
                            if (i + 1 < nvDTOs.Count())
                            {
                                if (manhanvien == nvDTOs[i + 1].MaNhanVien)
                                {
                                    i = i + 1;
                                }
                            }
                        }
                        html += "</table>";
                        Response.Write(html);
                        break;
                    }

                    case "ViewDetailNV":
                    {
                        int MaNhanVien = int.Parse(Request.QueryString["MaNhanVien"].ToString());
                        NhanVienDTO[] nvDTOs = ws.ChiTietNV(MaNhanVien);
                        string html = "<table Align='center' border='1px' cellpadding='2px' cellspacing='2px'><tr style='background:green'><td>Tên nhân viên</td><td>Tên loại nhân viên</td><td>Ngày nhận chức</td></tr>";
                        foreach (NhanVienDTO nvDTO in nvDTOs)
                        {
                            html += "<tr>";
                            html += "<td>" + nvDTO.TenNhanVien + "</td>";
                            html += "<td>" + nvDTO.TenLoaiNV + "</td>";
                            html += "<td>" + nvDTO.NgayNhanChuc + "</td>";
                            html += "</tr>";
                        }
                        html += "</table>";
                        Response.Write(html);
                        break;
                    }

                    // Quan ly khach hng

                    case "UpdateTinhTrang":
                    {
                        if (ws.UpdateTinhTrangKH(int.Parse(Request.QueryString["MaKhachHang"].ToString())))
                            Response.Write(1);
                        break;
                    }
                    case "UpdateTinhTrang0":
                    {
                        if (ws.UpdateTinhTrangKH0(int.Parse(Request.QueryString["MaKhachHang"].ToString())))
                            Response.Write(0);
                        break;
                    }
                    case "GetListKhachHang":
                    {
                        KhachHangDTO[] khDTOs = ws.GetListKHACHHANG();
                        string html = "<table Align='center' border='1px' cellpadding='1px' cellspacing='1px'><tr style='background:#FF6600; font-weight:bold'><td>Mã khách hàng</td><td>Tên khách Hàng</td><td>username</td><td>Password</td><td>Địa chỉ</td><td>CMND</td><td>Điện thoại</td><td>Thông tin tài khoản</td><td>Tình trạng</td></tr>";
                        foreach (KhachHangDTO khDTO in khDTOs)
                        {
                            html += "<tr>";
                            html += "<td>" + khDTO.MaKhachHang + "</td>";
                            html += "<td>" + khDTO.TenKhachHang + "</td>";
                            html += "<td>" + khDTO.Username + "</td>";
                            html += "<td>" + khDTO.Password + "</td>";
                            html += "<td>" + khDTO.CMND + "</td>";
                            html += "<td>" + khDTO.DiaChi + "</td>";
                            html += "<td>" + khDTO.DienThoai + "</td>";
                            html += "<td>" + khDTO.ThongTinTaiKhoan + "</td>";
                            string classCSS = "";
                            string check="";
                            if (khDTO.TrangThai == 0)
                            {
                                classCSS = "UpdateKO";
                               
                            }
                            else
                            {
                                classCSS = "UpdateOK";
                                check = "checked='checked'";
                            }
                            html += "<td>" + "<table><tr><td><input type='checkbox' " + check +  "onclick=\"UpdateTinhTrang(this," + khDTO.MaKhachHang + ",'lbl_status_" + khDTO.MaKhachHang + "');\"" + "/></td><td><label id='lbl_status_" + khDTO.MaKhachHang + "' class='" + classCSS + "'>&nbsp;&nbsp;&nbsp;&nbsp;</label></td></tr></table></td>";
                           
                            html += "</tr>";
                        }
                        html += "</table>";
                        Response.Write(html);
                        break;
                    }
                    // Quan ly lo trinh tuyen
                    case "GetListTuyenDuong":
                    {
                        TuyenVanChuyenDTO[] tvcDTOs = ws.getListTuyenDuong();
                        //tuyenvaTO[] nvDTOs = ws.GetListXe();
                        string html = "<table Align='center' border='1px' cellpadding='2px' cellspacing='2px'><tr style='background:green'><td>Mã tuyến</td><td>Tên tuyến</td><td>Điểm đầu</td><td>Điểm cuối</td><td>Chi Tiết Tuyến</td></td>Thêm đoạn đường trung gian</td>";
                        foreach (TuyenVanChuyenDTO tvcDTO in tvcDTOs)
                        {
                            html += "<tr>";
                            html += "<td>" + tvcDTO.MaTuyen + "</td>";
                            html += "<td>" + tvcDTO.TenTuyen + "</td>";
                            html += "<td>" + tvcDTO.DiemDau + "</td>";
                            html += "<td>" + tvcDTO.DiemCuoi + "</td>";
                            html += "<td>" + "<a href='#' onclick='if(ViewChiTietTuyenDuong(" + tvcDTO.MaTuyen + ")) return false;'> Chi Tiết </a>" + "</td>";
                            html += "<td>" + "<a href='ThemChiTietLoTrinhTuyen.aspx?MaTuyen=" + tvcDTO.MaTuyen + "&TenTuyen=" + tvcDTO.TenTuyen + "'>Thêm đoạn đường trung gian</a></td>";

                            html += "</tr>";
                        }
                        html += "</table>";
                        Response.Write(html);
                        break;
                    }
                    case "ViewChiTietTuyenDuong":
                    {

                        int Matuyen = int.Parse(Request.QueryString["MaTuyen"].ToString());
                        String tenchinhanh = ws.ViewChiTietTuyenDuong(Matuyen);
                        //tenchinhanh= ws.ViewChiTietTuyenDuong(Matuyen);
                        string html = "<table Align='center' border='1px' cellpadding='2px' cellspacing='2px'><tr style='background:Yellow'><td>Lộ trình tuyến</td></tr>";
                        html += "<tr>";
                        html += "<td>" + tenchinhanh + "</td>";

                        html += "</tr>";

                        html += "</table>";
                        Response.Write(html);
                        break;
                    }
                    case "addTuyenDuong":
                    {
                        TuyenVanChuyenDTO tvc = new TuyenVanChuyenDTO();
                        tvc.TenTuyen = Request.QueryString["txt_tentuyenduong"].ToString();
                        tvc.DiemDau = int.Parse(Request.QueryString["sbdiachidau"].ToString());
                        tvc.DiemCuoi = int.Parse(Request.QueryString["sbdiachicuoi"].ToString());
                        if (!ws.insert_TuyenDuong(tvc))
                        {

                            Response.Write("Lỗi insert");
                        }
                        else
                            Response.Write("Thêm tuyến đường thành công");
                        break;
                    }
                    case "addLoTrinhTuyen":
                    {
                        int matuyen = int.Parse(Request.QueryString["MaTuyen"].ToString());
                        int diadiemdau = int.Parse(Request.QueryString["sbChiNhanh1"].ToString());
                        int diadiemcuoi = int.Parse(Request.QueryString["sbChiNhanh2"].ToString());
                        if (!ws.Insert_LoTrinhTuyen(matuyen, diadiemdau, diadiemcuoi))
                        {

                            Response.Write("Lỗi insert");
                        }
                        else
                            Response.Write("Thêm lộ trình tuyến thành công");
                        break;
                    }
                } // end switch
            } // end if

        }
    }
}